package com.yungu.swift.assets.passenger.model.dto;

import com.yungu.swift.base.model.BaseDto;
import com.yungu.swift.base.model.annotation.Desensitization;

import java.math.BigDecimal;
import java.util.Date;


/**
 * Copyright © 厦门云谷互联信息有限公司 2018-2020 All Right Reserved
 * <p>
 * 乘客优惠券
 *
 * @author Zerrion
 * @version 1.0.0-RELEASE
 * @since 2018-07-03 18:03
 */

public class PassengerCouponDto extends BaseDto implements Cloneable {

    /**
     * 乘客UUID
     **/
    private String passengerUuid;

    /**
     * 优惠券设置表uuid
     **/
    private String sysCouponUuid;

    /**
     * 优惠券子序号（8位，从1开始顺序）
     **/
    private String serialNum;

    /**
     * 金额
     **/
    private Double money;

    /**
     * 状态0：无效，1：有效，2：已使用，3：被占用，待支付成功后变为[2:已使用]
     **/
    private Integer status;

    /**
     * 关联的订单uuid
     **/
    private String orderUuid;

    /**
     * 使用时间
     **/
    private Date useTime;

    /**
     * 使用期限开始时间
     **/
    private Date useStartTime;

    /**
     * 使用期限结束时间
     **/
    private Date useEndTime;

    /**
     * 公司uuid
     **/
    private String companyUuid;

    /**
     * 代理uuid
     **/
    private String agentUuid;

    //附加字段
    /**
     * 优惠券编号
     */
    private String couponNo;

    /**
     * 优惠券类型
     */
    private Integer type;

    /**
     * 优惠券呢折扣
     */
    private Double discount;

    /**
     * 条件金额
     **/
    private Double astrict;

    /**
     * 优惠券类型名称
     */
    private String name;

    /**
     * 优惠券介绍
     */
    private String instruction;

    /**
     * 获取方式
     */
    private Integer sendMode;

    /**
     * 乘客姓名
     */
    private String passengerName;

    /**
     * 订单号
     */
    private String orderNo;

    /**
     * 是否过期
     */
    private Integer expired;

    /**
     * 乘客联系方式
     */
    @Desensitization(type = Desensitization.DesensitionType.MOBILE)
    private String passengerMobile;

    /**
     * 订单金额
     */
    private BigDecimal totalFare;

    /**
     * 领取时间
     */
    private Date drawTime;

    /**
     * 限定城市
     */
    private String cityNames;

    /**
     * 限定城市UUID
     */
    private String cityUuids;

    /**
     * 最高抵扣金额
     */
    private BigDecimal highestMoney;

    /**
     * 存放抵扣金额字段
     */
    private BigDecimal deductibleAmount;

    /**
     * 优惠券有效时间
     * etc.有效期：2018-01-02 至 2018-01-03
     */
    private String aliveTime;

    public String getCityUuids() {
        return cityUuids;
    }

    public void setCityUuids(String cityUuids) {
        this.cityUuids = cityUuids;
    }

    public BigDecimal getDeductibleAmount() {
        return deductibleAmount;
    }

    public void setDeductibleAmount(BigDecimal deductibleAmount) {
        this.deductibleAmount = deductibleAmount;
    }

    public String getPassengerUuid() {
        return passengerUuid;
    }

    public void setPassengerUuid(String passengerUuid) {
        this.passengerUuid = passengerUuid;
    }

    public String getSysCouponUuid() {
        return sysCouponUuid;
    }

    public void setSysCouponUuid(String sysCouponUuid) {
        this.sysCouponUuid = sysCouponUuid;
    }

    public String getSerialNum() {
        return serialNum;
    }

    public void setSerialNum(String serialNum) {
        this.serialNum = serialNum;
    }

    public Double getMoney() {
        return money;
    }

    public void setMoney(Double money) {
        this.money = money;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public String getOrderUuid() {
        return orderUuid;
    }

    public void setOrderUuid(String orderUuid) {
        this.orderUuid = orderUuid;
    }

    public Date getUseTime() {
        return useTime;
    }

    public void setUseTime(Date useTime) {
        this.useTime = useTime;
    }

    public Date getUseStartTime() {
        return useStartTime;
    }

    public void setUseStartTime(Date useStartTime) {
        this.useStartTime = useStartTime;
    }

    public Date getUseEndTime() {
        return useEndTime;
    }

    public void setUseEndTime(Date useEndTime) {
        this.useEndTime = useEndTime;
    }

    public String getCompanyUuid() {
        return companyUuid;
    }

    public void setCompanyUuid(String companyUuid) {
        this.companyUuid = companyUuid;
    }

    public String getAgentUuid() {
        return agentUuid;
    }

    public void setAgentUuid(String agentUuid) {
        this.agentUuid = agentUuid;
    }

    public String getCouponNo() {
        return couponNo;
    }

    public void setCouponNo(String couponNo) {
        this.couponNo = couponNo;
    }

    public Integer getType() {
        return type;
    }

    public void setType(Integer type) {
        this.type = type;
    }

    public Double getDiscount() {
        return discount;
    }

    public void setDiscount(Double discount) {
        this.discount = discount;
    }

    public Double getAstrict() {
        return astrict;
    }

    public void setAstrict(Double astrict) {
        this.astrict = astrict;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getInstruction() {
        return instruction;
    }

    public void setInstruction(String instruction) {
        this.instruction = instruction;
    }

    public Integer getSendMode() {
        return sendMode;
    }

    public void setSendMode(Integer sendMode) {
        this.sendMode = sendMode;
    }

    public String getPassengerName() {
        return passengerName;
    }

    public void setPassengerName(String passengerName) {
        this.passengerName = passengerName;
    }

    public String getOrderNo() {
        return orderNo;
    }

    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }

    public Integer getExpired() {
        return expired;
    }

    public void setExpired(Integer expired) {
        this.expired = expired;
    }

    public String getPassengerMobile() {
        return passengerMobile;
    }

    public void setPassengerMobile(String passengerMobile) {
        this.passengerMobile = passengerMobile;
    }

    public BigDecimal getTotalFare() {
        return totalFare;
    }

    public void setTotalFare(BigDecimal totalFare) {
        this.totalFare = totalFare;
    }

    public Date getDrawTime() {
        return drawTime;
    }

    public void setDrawTime(Date drawTime) {
        this.drawTime = drawTime;
    }

    public String getCityNames() {
        return cityNames;
    }

    public void setCityNames(String cityNames) {
        this.cityNames = cityNames;
    }

    public BigDecimal getHighestMoney() {
        return highestMoney;
    }

    public void setHighestMoney(BigDecimal highestMoney) {
        this.highestMoney = highestMoney;
    }

    public String getAliveTime() {
        return aliveTime;
    }

    public void setAliveTime(String aliveTime) {
        this.aliveTime = aliveTime;
    }

    @Override
    public PassengerCouponDto clone() {
        PassengerCouponDto passengerCouponDto = null;
        try {
            passengerCouponDto = (PassengerCouponDto) super.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return passengerCouponDto;
    }
}
